<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<!--last modified on Wednesday, October 19, 2016 09:39 AM -->
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
  <TITLE>se2aufg1</TITLE>
  <LINK rel=stylesheet type="text/css" media="screen" href="screen.css">
  <LINK rel=stylesheet type="text/css" media="print" href="print.css">
</HEAD>
<BODY>
<P>
<FONT SIZE="3">Hochschule Augsburg &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16. 3. 2011<BR>
Fakult&auml;t f&uuml;r  Informatik<BR>
Prof. Meixner</FONT>
<H3>
  <FONT SIZE="3"><B>Praktikum Programmieren 2 im Studiengang Informatik</B></FONT>
</H3>
<P>
<FONT SIZE="3"><B>Aufgabe 1</B></FONT>
<P>
Es sollen "Bankgesch&auml;fte" mit einem stark vereinfachten Modell (in memory) realisiert
(bzw. simuliert) werden.
<P>
Definieren Sie dazu eine Basisklasse <CODE>Konto</CODE> mit Attributen f&uuml;r Kontonummer, Kontostand und Kontoinhaber (letzterer vereinfacht als String realisiert) und jeweils einer Methode f&uuml;r Zugang bzw. Abgang eines spezifizierten Betrages sowie zum Abfragen der Kontonummer, des Kontoinhabers und des Kontostandes.<P>Kontonummer und Kontoinhaber sollen dem (einzigen) Konstruktor als Parameter &uuml;bergeben werden, w&auml;hrend der Kontostand initial den Wert 0 haben soll.<P>
Die Methoden f&uuml;r Zugang und Abgang sollen neben dem Betrag (muss gr&ouml;&szlig;er als 0 sein!) einen String
f&uuml;r den Grund des Zu- bzw. Abgangs als Parameter besitzen.<BR>
Diese Methoden ver&auml;ndern nicht selbst den Kontostand, sondern delegieren
an eine interne Methode <CODE>verbuchen()</CODE>, die neben der
Kontostands&auml;nderung auch die Buchung registriert. Dazu soll - vorerst
- nur eine Zeile auf System.out ausgegeben werden, in der der Buchungsgrund
und der Betrag mit "+" oder "-" am Ende versehen (f&uuml;r Zu- bzw. Abgang)
enthalten sind. Sp&auml;ter werden die Buchungen in einer Buchungsliste
aufbewahrt.<BR>
Warum ist es sinnvoll, die Methode <CODE>verbuchen()</CODE> zus&auml;tzlich
einzuf&uuml;hren?
<P>
&Uuml;berlegen Sie sich geeignete Sichtbarkeitsmodifikatoren f&uuml;r alle
Methoden.
<P>
F&uuml;gen Sie der Klasse <CODE>Konto</CODE> au&szlig;erdem eine abstrakte
Methode <CODE>verzinsen()</CODE> hinzu.
<P>
Diese soll erst in abgeleiteten Klassen wie z. B. <CODE>GiroKonto</CODE>
und <CODE>FestgeldKonto</CODE> implementiert werden.
<P>
Die Klasse <CODE>FestgeldKonto</CODE> soll - zun&auml;chst - der Einfachheit
halber als Attribut nur einen Haben-Zinssatz besitzen, der beim Aufruf der
Methode <CODE>verzinsen()</CODE> auf den momentan vorhandenen Kontostand
angewendet wird. Die so errechneten Zinsen werden dem Konto gutgeschrieben,
f&uuml;hren also zu einer Erh&ouml;hung des Kontostandes. Ein Festgeldkonto
soll Zu- und Abgang von Betr&auml;gen unterst&uuml;tzen. Dabei soll jedoch
geeignet gew&auml;hrleistet werden, da&szlig; niemals ein negativer Kontostand
entsteht. Vergessen Sie nicht, einen geeigneten Konstruktor f&uuml;r die
Klasse <CODE>FestgeldKonto</CODE> bereitzustellen.
<P>
Definieren Sie analog die Klasse <CODE>GiroKonto</CODE>. Im Unterschied zu
einem Festgeldkonto kann ein Girokonto auch einen negativen Kontostand aufweisen.
Dann sind beim Aufruf von <CODE>verzinsen()</CODE> Soll-Zinsen (auf den
momentanen Kontostand) zu berechnen. Auch wenn es viele Banken nicht tun,
bei Ihrer Girokonto-Implementierung soll es gegebenenfalls auch Haben-Zinsen
geben.
<P>
Ber&uuml;cksichtigen Sie bei der Realisierung der Klassen <CODE>Konto</CODE>,
<CODE>FestgeldKonto</CODE> &nbsp;und <CODE>GiroKonto</CODE> "Kapselung" und
verwenden Sie soweit sinnvoll "Vererbung" und "Polymorphismus".
<P>
Alle Klassen sollen dem Paket <CODE>bavaria.hightech.banking</CODE>
angeh&ouml;ren.
<P>
Schreiben Sie eine eigene Klasse (im Paket
<CODE>bavaria.hightech.testit</CODE>) mit einem Hauptprogramm zum Austesten
Ihrer Implementierungen.
<P>
Instanzieren Sie dazu verschiedene Konten, schreiben Sie Betr&auml;ge gut
und heben Sie auch ab.
<P>
Testen Sie au&szlig;erdem, ob das Verzinsen klappt.

		<p>Beginnen Sie schon jetzt damit, Ihre Sourcen mit JavaDoc-Kommentaren zu versehen und &quot;dr&uuml;cken Sie gelegentlich aufs Kn&ouml;pfchen&quot;&nbsp;zum Erzeugen der Dokumentation mit dem javadoc-Tool.</p>
		<P>
<P>
<B>Abnahme: i. d. R. am 21. bzw. 24. 3., sp&auml;testens am 28. bzw. 31. 3.!</B>
</BODY></HTML>
